﻿using System;

namespace enyo
{
    public class BasicScroller : DragScroller
    {
        public int ScrollTop { get; set; }
        public int ScrollLeft { get; set; }

        /// <summary>
        /// Enables horizontal scrolling only if content exceeds the scroller's width.
        /// </summary>
        public bool AutoHorizontal { get; set; }

        /// <summary>
        /// Enables vertical scrolling only if content exceeds the scroller's height.
        /// </summary>
        public bool AutoVertical { get; set; }

        /// <summary>
        /// Display fps counter
        /// </summary>
        public bool FpsShowing { get; set; }

        /// <summary>
        /// Use accelerated scrolling.
        /// </summary>
        public bool Accelerated { get; set; }



        /// <summary>
        /// Event that fires when scrolling starts.
        /// </summary>
        public EnyoEvent<Control> onScrollStart;

        /// <summary>
        /// Event that fires just before scroll position changes.
        /// </summary>
        public EnyoEvent<Control> onBeforeScroll;

        /// <summary>
        /// Event that fires just after scroll position changes.
        /// </summary>
        public EnyoEvent<Control> onScroll;

        /// <summary>
        /// Event that fires when scrolling stops.
        /// </summary>
        public EnyoEvent<Control> onScrollStop;

        /// <summary>
        /// Returns an object describing the scroll boundaries, which are the dimensions of scrolling content.
        /// </summary>
        /// <returns></returns>
        public Rectangle GetBoundaries()
        {
            return null;
        }

        /// <summary>
        /// Returns true if the scroller is scrolling when called.
        /// </summary>
        /// <returns></returns>
        public bool IsScrolling()
        {
            return false;
        }

        /// <summary>
        /// Ensures that the specified position is displayed in the viewport. 
        /// If the position is not currently in view, the specified position is scrolled to directly, without animation.
        /// </summary>
        /// <param name="y"></param>
        /// <param name="x"></param>
        public void ScrollIntoView(int y, int x)
        {
        }

        /// <summary>
        /// Animates a scroll to the specified position.
        /// </summary>
        /// <param name="y"></param>
        /// <param name="x"></param>
        public void ScrollTo(int y, int x)
        {
        }

        /// <summary>
        /// Sets the scroll position to the bottom of the content, without animation.
        /// </summary>
        public void ScrollToBottom()
        {
        }
    }
}
